package com.app.conf;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 拦截器的属性配置
 *
 */
@Configuration
public class InterceptorConfiguration implements WebMvcConfigurer {


    /**
     * 重写addCorsMappings()解决跨域问题
     * 配置：允许http请求进行跨域访问
     *
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //指哪些接口URL需要增加跨域设置
        registry.addMapping("/**")
                //.allowedOrigins("*")//指的是前端哪些域名被允许跨域
                .allowedOriginPatterns("*")
                //需要带cookie等凭证时，设置为true，就会把cookie的相关信息带上
                .allowCredentials(true)
                //指的是允许哪些方法
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                //cookie的失效时间，单位为秒（s），若设置为-1，则关闭浏览器就失效
                .maxAge(-1);
    }

    /**
     * 重写addInterceptors()实现拦截器
     * 配置：要拦截的路径以及不拦截的路径
     *
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册Interceptor拦截器(Interceptor这个类是我们自己写的拦截器类)
        InterceptorRegistration registration = registry.addInterceptor(new Interceptor());
        //addPathPatterns()方法添加需要拦截的路径
        //所有路径都被拦截
        registration.addPathPatterns("/**");
        //excludePathPatterns()方法添加不拦截的路径
        //添加不拦截路径
        registration.excludePathPatterns(
                "/api/home/trainPostCount",//人员军事训练柱状图
                "/api/home/typePostCount",//型号柱状图
                "/api/home/testPostCount",//年度实验柱状图
                "/api/home/checkPostCount",//人员年度考评等次柱状图
                "/api/home/attachmentPostCount",//训练教材柱状图
                "/api/home/typePieCount",//型号饼状图
                "/api/home/testPieCount",//实验饼状图
                "/api/home/electronicPieCount",//个人电子设备饼图
                "/api/home/plantPieCount",//厂房饼状图
                "/api/home/pointPieCount",//保护点饼状图
                "/api/home/electronicPieCount",//电子设备饼状图
                "/api/home/pieCount",//饼状图
                "/api/read/insertRead",//新增阅读记录
//                "/api/message/getMessageList",
                "/api/home/homeCount",//首页统计
                "/api/person/getPlaceByCusExcel",
                "/api/person/getPersonTitleList",//导出标题
                "/api/system/backupsList",
                "/api/system/sqlDownload",//下载备份文件
                "/api/system/zipFile",//下载压缩文件
                "/api/system/getBackupsList",//分页的备份列表
                //文件上传
                "/api/upload",
                //获取登录用户权限
                "/api/role/getUserPower",
                "/api/getFileTypeList",
                //登录
                "/error",//报错提示
                "/api/getFileTypeList",
                "/api/role/getCommonLevel",//获取level
                "/api/excel/testImport",
                "/api/excel/testImport2",
                "/api/userLogin",
                //退出登录
                "/loginOut",
                //获取验证码
                "/api/captcha",
                //通过token取权限
                "/api/getAdminInfoByToken",
                //获取权限树
                "/api/role/getRoleTree",
                //部门管理树
                "/api/dep/getDepTree",
                //下拉框
                "/api/person/getDropList",
                //设备下拉框
                "/api/elc/getDropList",
                //社交媒体下拉框
                "/api/media/getDropList",
                //事件下拉框
                "/api/inc/getDropList",
                //型号下拉框
                "/api/type/getDropList",
                //实验下拉框
                "/api/tests/getDropList",
                //军事训练下拉框
                "/api/train/getDropList",
                //保护点下拉框
                "/api/point/getDropList",
                //excel导出
                "/api/excel/exportExcel",
                //重置账号
                "/unsealaccount",
                //文件上传
                "/uploadImg",
                //图片静态资源
                "/**/**/*.jpg",
                "/**/**/*.png"
        );
    }
}

